using StudentManagement.Application.DTOs;

namespace StudentManagement.Application.Services;

public interface IClassService
{
    Task<ClassDTO> GetClassByIdAsync(int id);
    Task<IEnumerable<ClassDTO>> GetAllClassesAsync();
    Task<IEnumerable<ClassDTO>> GetClassesByGradeAsync(string grade);
    Task<IEnumerable<ClassDTO>> GetClassesByMajorAsync(string major);
    Task<IEnumerable<ClassDTO>> SearchClassesAsync(string keyword);
    Task<ClassDTO> CreateClassAsync(ClassDTO classDTO);
    Task<ClassDTO> UpdateClassAsync(int id, ClassDTO classDTO);
    Task DeleteClassAsync(int id);
    Task<bool> ClassExistsAsync(int id);
    Task<ClassDTO> GetClassWithStudentsAsync(int id);
}